package com.example.aidlservicedemo;

import android.os.Looper;

import androidx.annotation.NonNull;

/**
 * 线程工具类
 *
 * @author 猿小蔡
 * @since 2021/12/20
 */
public class ThreadUtils {

    /**
     * 运行io线程
     *
     * @param runnable 任务
     */
    public static void runIoThread(@NonNull Runnable runnable) {
        if (!isMainThread()) {
            runnable.run();
        } else {
            ThreadPoolManager.getIoExecutor().execute(runnable);
        }
    }

    /**
     * 运行主线程
     *
     * @param runnable 任务
     */
    public static void runMainThread(@NonNull Runnable runnable) {
        if (isMainThread()) {
            runnable.run();
        } else {
            ThreadPoolManager.runMainThread(runnable);
        }
    }

    /**
     * 延迟指定的毫秒数后，在主线程执行给定的任务。
     *
     * @param runnable 要执行的任务，不能为 null
     * @param delayMillis 延迟执行的毫秒数
     */
    public static void runMainThreadDelayed(@NonNull Runnable runnable, long delayMillis) {
        ThreadPoolManager.runMainThreadDelayed(runnable, delayMillis);
    }

    /**
     * 是否是主线程
     *
     * @return true：是，false：不是
     */
    public static boolean isMainThread() {
        return Looper.getMainLooper() == Looper.myLooper();
    }

}
